package com.operator.Activitys.activity;

import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.flyco.tablayout.SegmentTabLayout;
import com.flyco.tablayout.listener.OnTabSelectListener;
import com.google.gson.Gson;
import com.jaredrummler.materialspinner.MaterialSpinner;
import com.operator.Activitys.R;
import com.operator.Activitys.activity.base.BaseActivity;
import com.operator.Activitys.bean.Install;
import com.operator.Activitys.bean.User;
import com.operator.Activitys.http.manager.HomeManager;
import com.operator.Activitys.utils.Constant;
import com.operator.Activitys.utils.JumperUtils;
import com.operator.Activitys.utils.ToastUtils;

import org.simple.eventbus.Subscriber;

import java.util.ArrayList;
import java.util.List;

import butterknife.Bind;
import butterknife.OnClick;

/**
 * 项目名称：金泽云 手机app
 * 类描述：宽带安装
 * 创建人：张飞祥
 * 创建时间：2018/5/4 11:16
 * 修改人：张飞祥
 * 修改时间：2018/5/4 11:16
 * 修改备注：
 */
public class InstallActivity extends BaseActivity implements OnTabSelectListener {

    //返回按钮
    @Bind(R.id.iv_return)
    ImageView ivReturn;
    //标题
    @Bind(R.id.tv_title)
    TextView tvTitle;
    //TabLayout
    @Bind(R.id.tab_install_layout)
    SegmentTabLayout tabInstallLayout;
    //下拉选择框
    @Bind(R.id.spinner_install_select)
    MaterialSpinner spinnerInstallSelect;
    //资费介绍
    @Bind(R.id.tv_install_details)
    TextView tvInstallDetails;

    //TabLayout 标题
    private String[] mTitles = {"联通", "电信", "移动"};
    //宽带标志位 标题
    private String mInstallTagTitle = "";
    //宽带套餐 id
    private int mInstallId = 0;
    //宽带套餐 标题
    private String mInstallTitle = "";
    //宽带套餐 价格
    private double mInstallPrice = 0;

    List<String> mBacks = null;

    //初始化网络请求
    public HomeManager mApiManager;

    //TODO 当前 内存中 用户信息
    private User mACacheUser = null;

    @Override
    protected void initUI() {
        setContentView(R.layout.act_install);
        //网络请求接口 常驻方法
        mApiManager = mApiManager.getHomeApiManager(this,this.getTaskId());

        //TODO 获取内存用户实体
        Gson gson = new Gson();
        mACacheUser = gson.fromJson(mACache.getAsJSONObject(Constant.CACHE_USER) + "", User.class);

        //显示返回按钮
        ivReturn.setVisibility(View.VISIBLE);
        //设置标题
        tvTitle.setText("宽带安装");
        //设置滑块数据
        tabInstallLayout.setTabData(mTitles);
    }

    @Override
    protected void initData() {
        //设置 TextView 文本可滑动
        tvInstallDetails.setMovementMethod(ScrollingMovementMethod.getInstance());
        //TabLayout 事件监听
        tabInstallLayout.setOnTabSelectListener(this);
        //设置 默认 全局 宽带 tag 标题
        mInstallTagTitle = mTitles[0];
        //TODO 开始网络请求
        mApiManager.homeInstall(mTitles[0]);
    }

    /**
     * 加载 宽带安装 返回 报错
     */
    @Subscriber(tag = Constant.BUS_HOME_INSTALL_ERROR)
    public void onInstallError(String error) {
        ToastUtils.showShort(InstallActivity.this,"网络连接不稳定！");
    }

    /**
     * 加载 宽带安装 返回结果
     */
    @Subscriber(tag = Constant.BUS_HOME_INSTALL)
    public void onInstall(final List<Install> list) {
        //新建 list 数组，把名称提取出来
        mBacks = new ArrayList<>();
        //循环提取数据
        for (int i = 0; i < list.size(); i++) {
            mBacks.add(list.get(i).getTitle());
        }
        //TODO 填充数据 到下拉列表中
        spinnerInstallSelect.setItems(mBacks);

        if (mBacks.size()>0)
            //设置 下拉列表最大高度
            spinnerInstallSelect.setDropdownMaxHeight(500);


        //TODO 设置默认详情信息
        tvInstallDetails.setText(list.get(0).getDetial());
        //TODO 设置默认 向下传递数据信息
        //宽带套餐 id
        mInstallId = list.get(0).getBroadbandInfoId();
        //宽带套餐 标题
        mInstallTitle = list.get(0).getTitle();
        //宽带套餐 价格
        mInstallPrice = list.get(0).getPrice();

        //TODO 列表点击事件
        //监听事件
        spinnerInstallSelect.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener<String>() {
            @Override
            public void onItemSelected(MaterialSpinner view, int position, long id, String item) {
                //根据 item点击值，设置相应的 详情信息
                tvInstallDetails.setText(list.get(position).getDetial());
                //TODO 变更 向下传递数据信息
                //宽带套餐 id
                mInstallId = list.get(position).getBroadbandInfoId();
                //宽带套餐 标题
                mInstallTitle = list.get(position).getTitle();
                //宽带套餐 价格
                mInstallPrice = list.get(position).getPrice();
            }
        });
    }

    /**
     * 按钮点击事件
     * @return
     */
    @OnClick({R.id.iv_return,R.id.btn_install_submit})
    public void onClick(View view){
        switch (view.getId()){
            case R.id.iv_return:            //返回按钮
                finish();
                break;
            case R.id.btn_install_submit:   //确认按钮
                /**
                 * 逻辑判断
                 * 1.判断 当前店铺是否已经认证
                 * 2.判断 当前店铺是否给冻结了
                 * 3.都不是的情况下 进行原来的 数据操作
                 *
                 */
                if (Constant.SHOP_CONFIRM_YES.equals(mACacheUser.getIsCertified())) {

                    if (Constant.SHOP_STATE_YES.equals(mACacheUser.getState())) {
                        //TODO 非空判断
                        if ("".equals(mInstallTagTitle) || mInstallId == 0 ||
                                "".equals(mInstallTitle) || "".equals(mInstallPrice)){
                            //TODO 弹出提示信息
                            ToastUtils.showShort(this,"连接不稳定，没有拿到页面上相应的数据，请重试！");
                        }else if (mBacks.size()==0){
                            //TODO 弹出提示信息
                            ToastUtils.showShort(this,"当前运营商还没有套餐！");
                        }else{
                            //TODO  向下传递 TAG
                            Bundle bundle = new Bundle();
                            //宽带 tag 标题
                            bundle.putString(Constant.INTENT_INSTALL_TAG_TITLE,mInstallTagTitle);
                            //宽带套餐  id
                            bundle.putInt(Constant.INTENT_INSTALL_ID,mInstallId);
                            //宽带套餐  标题
                            bundle.putString(Constant.INTENT_INSTALL_TITLE,mInstallTitle);
                            //宽带套餐  价格
                            bundle.putDouble(Constant.INTENT_INSTALL_PRICE,mInstallPrice);
                            //开始跳转下一页
                            JumperUtils.JumpTo(this,InstallOpenActivity.class,bundle);
                        }
                    }else {
                        ToastUtils.showShort(this, getResources().getString(R.string.shop_state_no));
                    }
                }else{
                    ToastUtils.showShort(this, getResources().getString(R.string.shop_confirm_no));
                }
                break;
        }
    }

    /**
     * TabLayout 事件监听
     * @param position
     */
    @Override
    public void onTabSelect(int position) {
        //初始化价格
        mInstallPrice = 0;
        //设置 全局 宽带 tag 标题
        mInstallTagTitle = mTitles[position];
        //TODO 设置默认详情信息
        tvInstallDetails.setText("");
        //TODO 开始网络请求
        mApiManager.homeInstall(mTitles[position]);
    }
    @Override
    public void onTabReselect(int position) {
    }

    /**
     * 极光推送 店铺 冻结结果
     */
    @Subscriber(tag = Constant.BUS_JPUSH_SHOP_FROZEN_TAG)
    public void onJpushShopFrozenTag(String pushTag) {
        mACacheUser.setState(pushTag);
    }
}
